package src.itheima04;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
    IO异常的处理
        1.throws: 声明抛出异常,交给调用者处理
        2.try-catch: 自己内部处理
            try {

                可能产生异常的代码;
            } catch(异常类 变量名称){
                处理异常的代码;
            } finally{
                必须被执行的代码;
            }

       这里先采用 try-catch

 */
public class Demo05CopyCharFile {
    public static void main(String[] args) {
        //提升作用域: finally中才可以使用
        //初始值null: 防止try中创建对象出现异常,导致变量没有被初始化,不能使用
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("p:\\day11\\from\\f1.txt");
            fw = new FileWriter("day11\\dest\\f1.txt");
            int len = 0;
            char[] chs = new char[1024];

            while((len = fr.read(chs))!=-1) {
                fw.write(chs,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭流的代码,必须要被执行,所以写在finally当中
            //close方法抛出IOException,必须分开处理
            if(fw!=null) {//防止空指针异常
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fr!=null) {
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
